Skip to content

feat: session 2 — subgrouping, chat focus, split view, browser context - #1

Merged
ojfbot merged 8 commits into
mainfrom
feat/session-2-enhancements
Mar 25, 2026
Merged

feat: session 2 — subgrouping, chat focus, split view, browser context#1
ojfbot merged 8 commits into
mainfrom
feat/session-2-enhancements

Conversation

@ojfbot

@ojfbot ojfbot commented Mar 25, 2026

Copy link
Copy Markdown
Owner

Summary

  • Subgrouping enforcement: Strengthened LLM prompt + post-LLM enforceSubgroups() domain clustering ensures large groups decompose into children at specificity 5+
  • Tag badges: Tab tiles show 1-3 topic tag pills when large enough (h>64, w>120)
  • Chat-driven focus: Chat input like "show me my Claude tabs" auto-zooms into the matching group; Escape/breadcrumb dismiss properly
  • Gutter subgroup tiles: Sidebar shows labeled child-group tiles instead of cluttered favicon grids
  • Split view: Clicking a tab tiles the GroupThink window left and opens the tab in a right-half window
  • Browser context enrichment: Opt-in history/bookmarks/top-sites/sessions signals sent to LLM for smarter grouping (default off, runtime permissions)
  • Dia compatibility: tabGroups moved to optional permissions

Known issues

  • Stale cache on load: App shows cached grouping but silent background regroup doesn't reliably surface new tabs. The chrome.storage.onChanged listener + silent doGrouping approach needs debugging — new tabs opened after initial grouping may not appear until manual Refresh.

Test plan

  • At specificity 6+, groups with 6+ tabs show children subgroups
  • Large tab tiles display tag pills
  • Chat "focus on [group]" zooms in; Escape returns to overview
  • Gutter shows subgroup labels, not favicon grids
  • Clicking a tab opens split view (two tiled windows)
  • Settings: context enrichment toggle requests permissions on enable
  • Extension installs cleanly in Dia (no tabGroups crash)

🤖 Generated with Claude Code

ojfbot and others added 8 commits March 25, 2026 01:24
- Strengthen LLM prompt to MUST-decompose large groups into children
  at specificity 5+ (6+ tabs) and 7+ (4+ tabs)
- Add enforceSubgroups() post-LLM enforcement via domain clustering
- Lower shouldRePrompt thresholds for more aggressive re-prompting
- Add tabTags to LLM schema (Zod + prompts + types)
- Render tag badge pills on large tab tiles (h>64, w>120)
- Add .gt-tag pill CSS styles

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- LLM can return focusGroupLabel/focusChildLabel to auto-zoom into a
  group when user asks via chat (e.g. "show me my Claude tabs")
- TreemapView accepts requestedFocusLabel prop with effect to auto-focus
- onFocusDismissed callback clears focus when user navigates back
- Breadcrumb, Escape, and group click all properly dismiss chat focus

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace emitGutterTabs() with emitGutterChildren() — sidebar groups
now show labeled child-group tiles instead of cluttered favicon grids.
Groups without children show just their label and tab count.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- splitViewTab() tiles GroupThink left, clicked tab right using
  chrome.windows + system.display APIs
- Wire enforceSubgroups step 4 + hydrate tags in background pipeline
- Add split-view-tab and browser context gathering to message handler

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New browser-context.ts gathers history visits, top sites, bookmarks,
  and recently closed tabs via optional Chrome APIs
- Options page: context enrichment toggle (Off/Basic/Full) with
  runtime permission request on enable
- Move tabGroups to optional_permissions for Dia compatibility
- Default off — opt-in only, data never persisted

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ge.json

pnpm/action-setup@v4 now errors when both `version` input and
`packageManager` in package.json are set. Let it read from package.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
env.ts is gitignored (generated at build time from env.json).
CI needs the stub to exist before tsc runs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@ojfbot
ojfbot merged commit f63a902 into main Mar 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant